from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox
from aylinuxhp import Ui_MainWindow
class Aylinuxhp(QtWidgets.QMainWindow,Ui_MainWindow):
    ilksayi=None
    ikincisayi=False
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        
        # rakam butonu işlemleri
        self.buton0.clicked.connect(self.rakama_bas)
        self.buton1.clicked.connect(self.rakama_bas)
        self.buton2.clicked.connect(self.rakama_bas)
        self.buton3.clicked.connect(self.rakama_bas)
        self.buton4.clicked.connect(self.rakama_bas)
        self.buton5.clicked.connect(self.rakama_bas)
        self.buton6.clicked.connect(self.rakama_bas)
        self.buton7.clicked.connect(self.rakama_bas)
        self.buton8.clicked.connect(self.rakama_bas)
        self.buton9.clicked.connect(self.rakama_bas)
        self.ikisifir.clicked.connect(self.rakama_bas)
        self.ucsifir.clicked.connect(self.rakama_bas)
        self.pi.clicked.connect(self.pi_bas)
        # nokta butonu işlemleri
        self.nokta.clicked.connect(self.nokta_bas)

        # artı/eksi, yüzde, karekök butonu işlemleri
        self.eksiarti.clicked.connect(self.yuzde_artieksi)
       # self.yuzde.clicked.connect(self.yuzde_artieksi)
        self.karekok.clicked.connect(self.yuzde_artieksi)
        # işlem butonu işlemleri
        self.topla.clicked.connect(self.islemler)
        self.cikar.clicked.connect(self.islemler)
        self.bolme.clicked.connect(self.islemler)
        self.carp.clicked.connect(self.islemler)
        self.kuvvet.clicked.connect(self.islemler)
        self.yuzde.clicked.connect(self.islemler)
        
        self.topla.setCheckable(True)
        self.cikar.setCheckable(True)
        self.bolme.setCheckable(True)
        self.carp.setCheckable(True)
        self.kuvvet.setCheckable(True)
        self.yuzde.setCheckable(True)
        # eşittir butonu işlemleri
        self.esittir.clicked.connect(self.islemsonuc)
        self.esittir.setCheckable(True)
        # C butonu işlemleri
        self.butonc.clicked.connect(self.temizle)
        # Silme <= butonu işlemleri
        self.geri.clicked.connect(self.gerigit)
        # Bilgi butonu işlemleri
        self.bilgi.clicked.connect(self.bilgiver)


    def rakama_bas(self):
        buton = self.sender()
        if ((self.ikincisayi) and (self.esittir.isChecked())):
            self.sonuc.setText(format(float(buton.text()),'.15g'))
            self.ikincisayi = True   
            self.esittir.setChecked(False)        
        elif ((self.topla.isChecked() or self.cikar.isChecked() or self.yuzde.isChecked()  or self.kuvvet.isChecked() or self.bolme.isChecked() or self.carp.isChecked()) and (not self.ikincisayi)):
            self.sonuc.setText(format(float(buton.text()),'.15g'))
            self.ikincisayi = True
        else:
            if (('.' in self.sonuc.text()) and buton.text()== "0"):
                self.sonuc.setText(format(float(self.sonuc.text() + buton.text()),'.15'))
            else:
                self.sonuc.setText(format(float(self.sonuc.text() + buton.text()),'.15g'))

    def nokta_bas(self):
        # nokta varsa artık basma
        if ('.' in self.sonuc.text()):
            self.sonuc.setText(self.sonuc.text())
        else:
            self.sonuc.setText(self.sonuc.text()+".")

    def yuzde_artieksi(self):
        buton = self.sender()
        deger = float(self.sonuc.text())
        if buton.text()=="-/+":
            deger=deger * -1
        elif buton.text()=="√¯":
            deger=deger ** 0.5
        else:
            deger=deger * 0.01
        self.sonuc.setText(format(deger,'.15g'))

    def islemler(self):
        buton = self.sender()
        self.ilksayi = float(self.sonuc.text())
        self.bolme.setChecked(False)
        self.topla.setChecked(False)
        self.cikar.setChecked(False)
        self.kuvvet.setChecked(False)
        self.yuzde.setChecked(False)
        self.carp.setChecked(False)
        buton.setChecked(True)

    def islemsonuc(self):
        yenideger=""
        if self.esittir.isChecked()== True or yenideger=="" :
            if self.ilksayi == None or self.esittir.isChecked()== False :
                buton = self.sender()
                buton.setChecked(False)
                ikincideger = float(self.sonuc.text())
            else:
                ikincideger = float(self.sonuc.text())
                if self.topla.isChecked():
                    yenideger = self.ilksayi + ikincideger
                    self.sonuc.setText(format(yenideger, '.15g'))
                    self.topla.setChecked(False)

                elif self.carp.isChecked():
                    yenideger = self.ilksayi * ikincideger
                    self.sonuc.setText(format(yenideger, '.15g'))
                    self.carp.setChecked(False)
                elif self.cikar.isChecked():
                    yenideger = self.ilksayi - ikincideger
                    self.sonuc.setText(format(yenideger, '.15g'))
                    self.cikar.setChecked(False)
                elif self.bolme.isChecked():
                    try:
                        yenideger = self.ilksayi / ikincideger
                        self.sonuc.setText(format(yenideger, '.15g'))
                        self.bolme.setChecked(False)
                    except ZeroDivisionError:
                        print("Bir sayıyı 0'a bölemezsiniz!")

                elif self.kuvvet.isChecked():
                    yenideger = self.ilksayi ** ikincideger
                    self.sonuc.setText(format(yenideger, '.15g'))
                    self.kuvvet.setChecked(False)
                elif self.yuzde.isChecked():
                    yenideger = self.ilksayi * ikincideger / 100
                    self.sonuc.setText(format(yenideger, '.15g'))
                    self.yuzde.setChecked(False)
            if ikincideger != 0.0:
                if ikincideger == 0 :
                    self.msgBox = QMessageBox(self)
                    self.msgBox.setWindowTitle("Aylinux Hesap Makinesi")
                    self.msgBox.setIcon(QMessageBox.Warning)
                    self.msgBox.addButton("Tamam", QMessageBox.ActionRole)
                    self.msgBox.setText("Bir sayıyı 0'a bölemezsiniz! \nLütfen bölmek istediğiniz sayıyı tekrar girin.")
                    self.msgBox.show()
                else:
                    self.ilksayi = yenideger
                    self.esittir.setChecked(True)
            else:
                print("İşlem yapmak için önce sayı girmelisiniz! \nLütfen bir sayı girin.")
        else:
            print("İşlem yapmak için önce sayı girmelisiniz! \nLütfen bir sayı girin.")

    def temizle(self):
        self.ilksayi = 0
        self.ikincisayi = False
        self.sonuc.setText("0")
        self.bolme.setChecked(False)
        self.topla.setChecked(False)
        self.cikar.setChecked(False)
        self.kuvvet.setChecked(False)
        self.yuzde.setChecked(False)
        self.carp.setChecked(False)
        self.esittir.setChecked(False)

    def gerigit(self):
        if len(self.sonuc.text()) != 1:
            self.sonuc.setText(self.sonuc.text()[0:-1]) # Son girilen rakamı siler
            print(len(self.sonuc.text()))
        else:
            self.sonuc.setText("0")
    def pi_bas(self):
        self.sonuc.setText("3.14")

    def bilgiver(self):
        self.msgBox = QMessageBox(self)
        self.msgBox.setWindowTitle("Aylinux Hesap Makinesi")
        self.msgBox.setIcon(QMessageBox.Warning)
        self.msgBox.addButton("Tamam", QMessageBox.ActionRole)
        self.msgBox.setText("Aylinux Hesap Makinesi v0.1 \n\nBu uygulama Aylinux için Cihan Alkan tarafından hazırlanmıştır.")
        self.msgBox.show()


